Format |
Syntax: |
Operation: |
Operands: |
Architecture revision |
Opcode | ||||||||||||||||
1 |
psubadds.uh Rd, Rx:<part>, Ry:<part> |
If (Rx-part == t) then operand1 = Rx[31:16] else operand1 = Rx[15:0]; If (Ry-part == t) then operand2 = Ry[31:16] else operand2 = Ry[15:0]; Rd[31:16] = SATSU(ZE(operand1, 17) - ZE(operand2, 17), 16); Rd[15:0] = SATU(ZE(operand1, 17) + ZE(operand2, 17), 16); |
{d, x, y} ∈ {0, 1, …, 15} part ∈ {t,b} |
Rev1+ |
| ||||||||||||||||
2 |
psubadds.sh Rd, Rx:<part>, Ry:<part> |
If (Rx-part == t) then operand1 = Rx[31:16] else operand1 = Rx[15:0]; If (Ry-part == t) then operand2 = Ry[31:16] else operand2 = Ry[15:0]; Rd[31:16] = SATS(SE(operand1, 17) - SE(operand2, 17), 16 ); Rd[15:0] = SATS(SE(operand1, 17) + SE(operand2, 17), 16); |
{d, x, y} ∈ {0, 1, …, 15} part ∈ {t,b} |
Rev1+ |
|
Perform a subtraction and addition on the same halfword operands which are selected from the source registers. The resulting halfwords are saturated to unsigned halfwords (psubadds.uh) or signed halfwords (psubadds.sh) and then packed together in the destination register.
Q: |
Flag set if saturation occured in one or more of the partial operations. |
V: |
Not affected. |
N: |
Not affected. |
Z: |
Not affected. |
C: |
Not affected. |